package cl.gob.minvu.catastromobile;

import com.google.gson.Gson;

import cl.gob.minvu.catastromobile.entities.Encuestado;
import cl.gob.minvu.catastromobile.util.GenericUtil;
import android.content.Intent;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;
import android.widget.Spinner;

/**
 * @author psep
 * 
 */
public class AntViviendaEncActivity extends AbstractActivity {

	private EditText apellidoPaterno;
	private EditText apellidoMaterno;
	private EditText nombres;
	private EditText run;
	private EditText dv;
	private EditText nacionalidad;
	private Spinner genero;
	private Encuestado encuestado;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_ant_vivienda_enc);
		super.session = super.getSharedPreferences(GenericUtil.SESSION,
				MODE_PRIVATE);
		this.apellidoPaterno = (EditText) super
				.findViewById(R.id.editTextPaternoEncuestado);
		this.apellidoMaterno = (EditText) super
				.findViewById(R.id.editTextMaternoEncuestado);
		this.nombres = (EditText) super
				.findViewById(R.id.editTextNombresEncuestado);
		this.run = (EditText) super.findViewById(R.id.editTextRutEncuestado);
		this.dv = (EditText) super.findViewById(R.id.editTextDvEncuestado);
		this.nacionalidad = (EditText) super
				.findViewById(R.id.editTextNacionalidadEncuestado);
		this.genero = (Spinner) super.findViewById(R.id.spinnerSexoEncuestado);
		this.onLoadSession();
	}

	/**
	 * 
	 */
	private void onLoadSession() {
		String encuestadoJson = super.session.getString(GenericUtil.ENCUESTADO, null);

		if (encuestadoJson != null) {
			Gson gson = new Gson();
			this.encuestado = gson.fromJson(encuestadoJson, Encuestado.class);
			this.loadTextFrm();
		}
	}

	/**
	 * 
	 */
	private void loadTextFrm() {
		if (this.encuestado != null) {
			this.apellidoPaterno.setText(this.encuestado.apellidoPaterno);
			this.apellidoMaterno.setText(this.encuestado.apellidoMaterno);
			this.nombres.setText(this.encuestado.nombres);
			this.run.setText(String.valueOf(this.encuestado.run));
			this.dv.setText(String.valueOf(this.encuestado.dv));
			this.nacionalidad.setText(this.encuestado.nacionalidad);
			this.genero.setSelection(this.encuestado.genero);
		}
	}

	/**
	 * 
	 */
	private void loadEncuestado() {
		this.encuestado = new Encuestado();
		this.encuestado.apellidoPaterno = super
				.getStringEditText(this.apellidoPaterno);
		this.encuestado.apellidoMaterno = super
				.getStringEditText(this.apellidoMaterno);
		this.encuestado.nombres = super.getStringEditText(this.nombres);
		this.encuestado.loadRunCompleto(super.getStringEditText(this.run),
				super.getStringEditText(this.dv));
		this.encuestado.nacionalidad = super
				.getStringEditText(this.nacionalidad);
		this.encuestado.genero = super.getIdSpinner(this.genero);
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.ant_vivienda_enc, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		int id = item.getItemId();

		switch (id) {
		case R.id.encuestado_frm_descartar:
			this.reset();
			return true;

		case R.id.encuestado_frm_atras:
			super.startActivity(new Intent(AntViviendaEncActivity.this,
					FormActivity.class));
			finish();
			return true;

		default:
			return super.onOptionsItemSelected(item);
		}
	}

	/**
	 * @param button
	 */
	public void onClickSgte(View button) {
		if (this.validateFrm()) {

			this.loadEncuestado();

			if (!GenericUtil.validateRun(this.encuestado.run,
					this.encuestado.dv)) {
				this.run.setError("El RUN ingresado no es válido");
				this.dv.setError("El RUN ingresado no es válido");
			} else {
				Gson gson = new Gson();
				String serializable = gson.toJson(this.encuestado);
				Editor edit = super.session.edit();
				edit.putString(GenericUtil.ENCUESTADO, serializable);
				edit.commit();
				super.startActivity(new Intent(AntViviendaEncActivity.this,
						AntViviendaEncDirActivity.class));
				finish();
			}
		}
	}

	/**
	 * @return
	 */
	public boolean validateFrm() {
		int validador = 0;

		if (super.getStringEditText(this.apellidoPaterno).length() == 0) {
			this.apellidoPaterno.setError("Debe ingresar apellido paterno");
			validador = validador + 1;
		}

		if (super.getStringEditText(this.apellidoMaterno).length() == 0) {
			this.apellidoMaterno.setError("Debe ingresar apellido materno");
			validador = validador + 1;
		}

		if (super.getStringEditText(this.nombres).length() == 0) {
			this.nombres.setError("Debe ingresar los nombres del encuestado");
			validador = validador + 1;
		}

		if (super.getStringEditText(this.run).length() == 0) {
			this.run.setError("Debe ingresar el RUN completo del encuestado");
			validador = validador + 1;
		}

		if (super.getStringEditText(this.dv).length() == 0) {
			this.dv.setError("Debe ingresar el RUN del completo encuestado");
			validador = validador + 1;
		}

		if (super.getStringEditText(this.nacionalidad).length() == 0) {
			this.nacionalidad
					.setError("Debe ingresar la nacionalidad del encuestado");
			validador = validador + 1;
		}

		if (super.getStringSpinner(this.genero).length() == 0) {
			super.toastMsg("Debe ingresar la nacionalidad del encuestado");
			validador = validador + 1;
		}

		if (validador == 0) {
			return true;
		} else {
			return false;
		}
	}

	@Override
	public void reset() {
		this.encuestado = null;
		Editor edit = super.session.edit();
		edit.remove(GenericUtil.ENCUESTADO);
		edit.commit();
		this.apellidoPaterno.setText("");
		this.apellidoMaterno.setText("");
		this.nombres.setText("");
		this.run.setText("");
		this.dv.setText("");
		this.nacionalidad.setText("");
		this.genero.setSelection(0);
	}
}
